home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / mtask.exe / DEMO.C < prev    next >
C/C++ Source or Header  |  1993-05-09  |  1KB  |  55 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include "mtask.h"
  5.  
  6. int ntasks = 1;
  7.  
  8. void Task2(void)
  9. {
  10.   float x1,y1,x2,y2,ix,iy;
  11.   int num;
  12.   x1=y1=x2=y2=10;
  13.   ix=iy=0.9;
  14.   num = ntasks++;
  15.   for(;;){
  16.     MTXYPutch(x1,y1,'@'+num);
  17.     MTXYPutch(x2,y2,' ');
  18.     x2=x1;
  19.     y2=y1;
  20.     x1 += ix;
  21.     y1 += iy;
  22.     ix = x1 > 79 ? -((float)(rand() % 10)+1)/10  : ix;
  23.     ix = x1 < 2 ? ((float)(rand() % 10)+1)/10 : ix;
  24.     iy = y1 > 23 ? -((float)(rand() % 10)+1)/10 : iy;
  25.     iy = y1 < 2 ? ((float)(rand() % 10)+1)/10 : iy;
  26.   }
  27. }
  28.  
  29. void Task1(void)
  30. {
  31.   char ch,buf[80];
  32.  
  33.   while(1) {
  34.     sprintf(buf,"%d tasks running. Press 'a' add new task, 'r' to remove or 'q' to end.",ntasks);
  35.     MTXYPuts(1,25,buf);
  36.     ch = MTGetch();
  37.     if(ch=='q') EndMultiTasking();
  38.     else if (ch == 'a') AddNewTask((PTaskFunc) Task2);
  39.     else if (ch == 'r') RemoveTask(--ntasks);
  40.   }
  41. }
  42.  
  43.  
  44. void main(void)
  45. {
  46.   clrscr(); 
  47.   InitMultiTasking();
  48.   AddNewTask((PTaskFunc) Task1);
  49.   AddNewTask((PTaskFunc) Task2);
  50.   StartMultiTasking();
  51.   clrscr(); 
  52. }
  53.  
  54.  
  55.